package jgl.vajra.management.part.home.contract;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.management.bean.GrabListBean;
import jgl.vajra.management.bean.GrabOrdersBean;
import jgl.vajra.management.bean.ReceiptStatisticsBean;
import jgl.vajra.management.bean.SpeechInfoBean;
import jgl.vajra.management.databinding.FragmentGrabOrderBinding;
import jgl.vajra.management.netty.GrabOrderBean;
import jgl.vajra.management.widget.mvvm.model.BaseModel;
import jgl.vajra.management.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.management.widget.mvvm.viewmodel.BaseViewModel;

public class GrabOrderContract {
    public abstract static class Model extends BaseModel {

        public abstract Observable<SpeechInfoBean> getSpeechInfoData(Map<String, Object> map);

        public abstract Observable<GrabOrderBean> getMessageOrderData(Map<String, Object> map);

        public abstract Observable<GrabOrdersBean> getGrabOrdersData(Map<String, Object> map);

        public abstract Observable<List<GrabListBean>> getGrabListData(Map<String, Object> map);

        public abstract Observable<String> removeGrabOrderData(Map<String, Object> map);

        public abstract Observable<List<ReceiptStatisticsBean>> getReceiptStatisticsData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {

        void onListeningSetting();

        void onReconnect();

        void onHeatChart();

        void onTriangle();

        void returnSpeechInfoBean(SpeechInfoBean data);

        //void returnMessageOrderBean(GrabOrderBean data, String content);

        void onDetails(int position, GrabOrderBean data);

        void onCancel(int position, GrabOrderBean data);

        void onMyBid(int position, GrabOrderBean data);

        void onGrabOrders(int position, GrabOrderBean data);

        void returnGrabOrdersData(GrabOrdersBean data);

        void returnGrabListData(List<GrabListBean> data);

        void returnReceiptStatisticsData(List<ReceiptStatisticsBean> data);
    }

    public abstract static class ViewModel extends BaseViewModel<View, FragmentGrabOrderBinding, Model> {
        public abstract void getSpeechInfoData(Map<String, Object> map);

        public abstract void getMessageOrderData(Map<String, Object> map, String content);

        public abstract void getGrabOrdersData(Map<String, Object> map);

        public abstract void getGrabListData(Map<String, Object> map);

        public abstract void removeGrabOrderData(Map<String, Object> map);

        public abstract void getReceiptStatisticsData(Map<String, Object> map);
    }
}
